﻿#ifndef INFOSTUDENT_H
#define INFOSTUDENT_H
#include <QString>
#include <QStringList>
#include <QStandardItemModel>
#include "infoperson.h"
#include "fileoperator.h"
#include "modelset.h"
#include "managementstudent.h"
#include "infocourse.h"
#include <QList>
#include <QDebug>
class studentInfo:public personInfo,public studentManagement
{
public:
    //构造
    studentInfo();;
    //设置信息
    void setInfo(QString name,QString id,QString grade,QString stuclass,QString college,QString major,QString password,QStringList course);
    //加载相关信息
    void loadAboutInfo();
    //返回学院
    QString getCollege() const;
    //返回选课代码
    QStringList getSelectedCourse() const;
    //返回学生的基本信息
    QStringList getAllInfo() const;
    //派生类返回派生类对象指针
    virtual studentInfo* next();

    //学生管理类实例化

    //添加课程选课代码到学生信息中
    virtual void addCourse(QString id);
    //移除学生信息中的选课代码
    virtual void removeCourse(QString id);
    //选课
    virtual bool selectCourse(QString courseSelectId,QString courseName,QString courseTime);
    //退课
    virtual bool giveUpCourse(QString courseSelectId);
    //查看所有课程
    virtual void checkAllCourse(QStandardItemModel *model);
    //查看我的课程
    virtual void checkMyCourse(QStandardItemModel *model);
    //查看我的信息
    virtual void checkMyInfo(QStandardItemModel *model,int curRow) const;
    //修改密码
    virtual bool modifyPassword(QString oldPassword,QString newPassword);
    //保存当前的信息到文件中
    virtual void saveAllInfo();
    //以选课编号匹配课程
    virtual courseInfo& matchCourseWithId(const QString courseSelectId,QVector<courseInfo> &course);

private:
    QString stuGrade;//增加学生类年级信息
    QString stuClass;//增加学生类班级信息
    QString stuCollege;//增加学生类学院信息
    QString stuMajor;//增加学生类专业信息
    QString stuPassword;//增加学生类密码信息
    QStringList stuCourse;//增加学生类已选课程信息
    QVector<courseInfo> allCourse;
    QList<courseInfo> myCourse;

};

#endif // INFOSTUDENT_H
